package com.wjk.kylin.mall.auth.controller;

import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.CircleCaptcha;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil;
import com.wjk.kylin.mall.common.core.constant.Constants;
import com.wjk.kylin.mall.common.core.dto.base.BaseOutDTO;
import com.wjk.kylin.mall.common.core.dto.base.DataOutDTO;
import com.wjk.kylin.mall.common.redis.utils.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.awt.*;
import java.util.Map;

/**
 * 登录认证
 */
@Slf4j
@Validated
@RestController
@RequestMapping("/login")
public class LoginController {
    @Autowired
    private RedisUtil redisUtil;

//    /**
//     * 生成验证码
//     */
//    @GetMapping("/captcha")
//    public BaseOutDTO captcha() {
//        //生成验证码
//        CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(111, 36);
//        captcha.setBackground(Color.gray);
//
//        String code = captcha.getCode();
//        String imageBase64 = captcha.getImageBase64();
//
//        String uuid = IdUtil.simpleUUID();
//        // 唯一标识
//        String verifyKey = Constants.ADMIN_CAPTCHA_CODE_KEY + uuid;
//        redisUtil.set(verifyKey, code, Constants.CAPTCHA_EXPIRATION);
//
//        Map<String, Object> map = MapUtil.newHashMap(2);
//        map.put("uuid", uuid);
//        map.put("img", imageBase64);
//
//        return DataOutDTO.builder().data(map).build();
//    }

//    /**
//     * 登录
//     */
//    @PostMapping("/admin")
//    public BaseOutDTO admin(@RequestBody LoginAdminDTO login) throws HttpRequestMethodNotSupportedException {
//        String verifyKey = Constants.ADMIN_CAPTCHA_CODE_KEY + login.getUuid();
//        String captcha = (String) redisUtil.get(verifyKey);
//
//        //删除验证码 redis
//        redisUtil.del(verifyKey);
//
//        if (StringUtils.isBlank(captcha)) {
//            throw new BaseException("验证码失效，请重新获取");
//        } else if (!StringUtils.equalsIgnoreCase(captcha, login.getCode())) {
//            throw new BaseException("验证码错误，请重新输入");
//        }
//
//        Map<String, String> parameters = new HashMap<>();
//        parameters.put("grant_type", Constants.GRANT_TYPE);
//        parameters.put("client_id", Constants.ADMIN_CLIENT_ID);
//        parameters.put("client_secret", Constants.CLIENT_SECRET);
//        parameters.put("username", login.getUsername());
//        parameters.put("password", login.getPassword());
//
////        Principal principal = new UsernamePasswordAuthenticationToken(Constants.ADMIN_CLIENT_ID,null,null);
//
////        ResponseEntity<OAuth2AccessToken> oAuth2AccessToken = tokenEndpoint.postAccessToken(principal, parameters);
//
//        RestTemplate restTemplate = new RestTemplate();
//        restTemplate.getInterceptors().add(new BasicAuthenticationInterceptor(Constants.ADMIN_CLIENT_ID, Constants.CLIENT_SECRET));
//        BaseOutDTO token = restTemplate.postForObject("http://localhost:80/api/auth/oauth/token", parameters, BaseOutDTO.class);
//
//        return token;
////        return BaseOutDTO.success();
//    }

}
